Task routing is a challenging task that includes tradeoffs. For example, a resource routed a task at time A, is not available to perform a different task at the same time. In another example, the time it takes for a resource to perform a task can limit a number of tasks fulfilled by the resource. Consider a resource that takes six minutes to perform a task, it cannot perform a task at a first time and a second task at five minutes after the first time, because it will not be available for another minute. Thus, the resource will not be available when a new, more important task is to be allocated three minutes after the first task is routed to the resource. Further yet, resources can be scarce and the number of tasks to be performed can be more than the scarce resources can handle. The resources can be insufficient to complete tasks to be performed in such circumstances, creating a task backlog, and thus some prioritization of backlog tasks and new tasks can help alleviate some of these problems.